package controller

//import (
//	"MessageSendService/app/api/internal/models"
//	"github.com/gin-gonic/gin"
//	"net/http"
//)
//
//type Template struct {
//}
//
//// 创建模版
//func (t Template) Create(c *gin.Context) {
//	var template models.Template
//	err := c.ShouldBindJSON(&template)
//	if err != nil {
//		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
//		return
//	}
//	//result, err := services.TemplateService.Create(template)
//	if err != nil {
//		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
//		return
//	}
//	c.JSON(1, "fads")
//}

import (
	"MessageSendService/app/api/internal/service"
	"MessageSendService/app/common"
	"MessageSendService/app/common/models"
	"github.com/gin-gonic/gin"
	_ "gorm.io/gorm"
	"net/http"
	"strconv"
	"strings"
)

func TemplateInit(g *gin.Engine) {
	// 依次: 分页列表，单条，插入，修改，删除
	group := g.Group("/template")
	group.GET("/list", MessageTemplateApi{}.list) //不设置限制条件的画默认查询所有
	group.GET("/batch_get", MessageTemplateApi{}.batchGet)
	group.POST("/insert", MessageTemplateApi{}.insert)
	group.POST("/update", MessageTemplateApi{}.update)
	group.POST("/delete", MessageTemplateApi{}.delete)
	group.POST("/upload", MessageTemplateApi{}.uploadFile) //上传人群文件
}

// MessageTemplateApi 控制器

type MessageTemplateApi struct {
	Page int   `form:"page,default=1"`
	Size int   `form:"size,default=10"`
	Ids  []int `form:"ids"`
}

// list
// @Summary 查询。
// @Description  查询消息模版列表。
// @Tags 消息模版。
// @Param Page path int true "页数"
// @Param Size path int true "页大小"
// @Success 200 {object} common.Result
// @Router /template/list [get]
// 分页列表
func (t MessageTemplateApi) list(c *gin.Context) {
	_ = c.Bind(&t)
	v := models.MessageTemplate{}
	_ = c.Bind(&v)
	c.JSON(http.StatusOK, common.OkData(service.MessageTemplateService.List(t.Page, t.Size, &v)))
}

// uploadFile  todo 未测试
// @Summary 上传人群文件。
// @Description  上传人群文件。
// 上传人群文件并保存该文件到当前路径
func (t MessageTemplateApi) uploadFile(c *gin.Context) {
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(http.StatusBadRequest, common.Fail(err.Error()))
		return
	}
	err = c.SaveUploadedFile(file, "upload/"+file.Filename)
	if err != nil {
		c.JSON(http.StatusBadRequest, common.Fail(err.Error()))
		return
	}
	c.JSON(http.StatusOK, common.OkMsg("上传成功！"))
}

// one
// @Summary 查询。
// @Description  查询单个模版。
// @Tags 消息模版。
// @Param ids query []int true "根据主键id批量查询"
// @Success 200 {object} common.Result
// @Router /template/batch_get [get]
// 分页列表
func (t MessageTemplateApi) batchGet(c *gin.Context) {
	idsStr := c.Query("ids")
	idsStrList := strings.Split(idsStr, ",")
	var ids []int
	for _, idStr := range idsStrList {
		id, err := strconv.Atoi(idStr)
		if err != nil {
			c.JSON(http.StatusBadRequest, common.Fail("ids参数包含非整数值"))
			return
		}
		ids = append(ids, id)
	}
	result, err := service.MessageTemplateService.BatchGet(ids)
	if err != nil {
		c.JSON(http.StatusOK, common.Fail(err.Error()))
		return
	}
	c.JSON(http.StatusOK, common.OkData(result))
}

// update
// @Summary 更新。
// @Description  更新消息模版。
// @Tags 消息模版。
// @Accept json
// @Produce json
// @Param Body body models.MessageTemplate true "更新条件"
// @Success 200 {object} common.Result
// @Router /template/update [post]
// 分页列表
func (t MessageTemplateApi) update(c *gin.Context) {
	var v models.MessageTemplate
	_ = c.ShouldBindJSON(&v)
	service.MessageTemplateService.Update(v)
	c.JSON(http.StatusOK, common.OkMsg("修改成功！"))
}

// insert
// @Summary 插入。
// @Description  插入消息模版。
// @Tags 消息模版。
// @Accept json
// @Produce json
// @Param Body body models.MessageTemplate true "插入数据"
// @Success 200 {object} common.Result
// @Router /template/insert [post]
// 分页列表
func (t MessageTemplateApi) insert(c *gin.Context) {
	var v models.MessageTemplate
	_ = c.ShouldBindJSON(&v)
	service.MessageTemplateService.Insert(v)
	c.JSON(http.StatusOK, common.OkMsg("插入成功！"))
}

// delete
// @Summary 删除。
// @Description  删除消息模版。
// @Tags 消息模版。
// @Accept json
// @Produce json
// @Success 200 {object} common.Result
// @Router /template/delete [post]
// 分页列表
func (t MessageTemplateApi) delete(c *gin.Context) {
	_ = c.Bind(&t)
	service.MessageTemplateService.Delete(t.Ids)
	c.JSON(http.StatusOK, common.OkMsg("删除成功！"))
}
